home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / networke / civ-0.000 / civ-0 / civ-0.3 / src / player.h < prev    next >
C/C++ Source or Header  |  1995-11-19  |  2KB  |  106 lines

  1. #ifndef _PLAYER_H
  2. #define _PLAYER_H
  3.  
  4. #include "list.h"
  5.  
  6. class MsgQ;
  7. class Unit;
  8.  
  9. // MarkM added ANARCHY to govt types enumeration:
  10. enum { ANARCHY, DESPOT, MONARCH, REPUBLIC, DEMOCRACY };
  11.  
  12. class City;
  13.  
  14. class Player
  15. {
  16. public:
  17.   Player(char *Name, int Id);
  18.   ~Player();
  19.  
  20.   char *name;
  21.   char color1Str[40], color2Str[40]; // for fast color switching
  22.   int id;
  23.   List<ulong> citys;
  24.   List<ulong> units;
  25.  
  26.   long cityPic; // compiled city pic
  27.  
  28.   int govt; // government type
  29.   int tax;
  30.   // MarkM added luxuries rate:
  31.   int luxuries;
  32.   int money;
  33.  
  34.   int scienceAcc;
  35.   int needScience;
  36.  
  37.   char *researching;
  38.  
  39.   List<charp> discovered;
  40.   List<charp> canDiscover;
  41.   List<charp> canBuild;
  42.   List<charp> wonders;
  43. // MarkM added canGovern list of possible government types
  44.   List<charp> canGovern;
  45.  
  46.   int templeEffect, cathedralEffect, seamoveBonus, tradeBonus;
  47.  
  48.   List<charp> messages; // any messages we wan't to show in city turn
  49.  
  50.   // create the first unit and start up the player, will also send
  51.   // out the info for this unit to all other players
  52.   void Setup();
  53.  
  54.   // send all the moves we made in this turn
  55.   void SendMoves(MsgQ *);
  56.  
  57.   // get all moves a remote player made
  58.   void ShowMoves(MsgQ *, MsgQ *outQ);
  59.  
  60.   void InitMoveTurn();
  61.   void MoveTurnMesg(MsgQ *);
  62.   void MoveTurnKey(int event, int x, int y, char *data);
  63.  
  64.   void InitCityTurn();
  65.   void CityTurnMesg(MsgQ *);
  66.   void CityTurnKey(int event, int x, int y, char *data);
  67.  
  68.   void UpdateCities();
  69.  
  70.   long CompilePic(char **pic);
  71.  
  72.   void WonderEffect(City *city);
  73.   int HasWonder(char *name);
  74.   void DeleteWonder(char *name);
  75.  
  76.   // saves everything to save file
  77.   void Save();
  78.  
  79.   void Restore(); // restore from save file
  80.  
  81. private:
  82.  
  83.   enum { NORMAL, IN_SELECT };
  84.  
  85.   enum { SCIENCE, TAX_RATE, LUXURY_RATE, REVOLUTION, GOVERNMENT_TYPE, 
  86.      BUILD_BUY, CITY_BUILDING };
  87.  
  88.   int state, selecting;
  89.   int initiatedSave; // if save initiated
  90.  
  91.   MsgQ *unDispQ; // undisplayed moves
  92.   int doneMoving; // true if he's told us he's done moving
  93.   int acks_left; // number of acks remaining
  94.   int accepts_left; // number of accepts outstanding
  95.  
  96.   Unit *currUnit; // currently selected unit
  97.  
  98.   City *FindCityWithMsg();
  99.   void ChooseGovernment();
  100.   void SelectEvent(int event, int x, int y, char *data);
  101. };
  102.  
  103. typedef Player *PlayerP;
  104.  
  105. #endif
  106.